import { ACCESS_ENUM } from '@/access/accessEnum.ts'

/**
 * 检查权限（判断当前登录用户是否具有某个权限）
 * @param loginUser 当前登录用户
 * @param needAccess 需要有的权限
 * @return boolean 有无权限
 */
const checkAccess = (loginUser: any, needAccess = ACCESS_ENUM.NOT_LOGIN) => {
  // 获取当前登录用户具有的权限（如果没有 loginUser，则表示未登录）
  const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN
  let arrayAccess = []
  let arrayNeedAccess = []

  if (needAccess !== ACCESS_ENUM.NOT_LOGIN) {
    arrayNeedAccess = needAccess.split(',')
  }
  if (loginUserAccess !== ACCESS_ENUM.NOT_LOGIN) {
    arrayAccess = loginUserAccess.split(',')
  }

  // 如果需要的权限是 NOT_LOGIN，直接返回 true
  if (needAccess === ACCESS_ENUM.NOT_LOGIN) {
    return true
  }

  // 如果需要用户登录权限
  if (arrayNeedAccess.includes(ACCESS_ENUM.USER)) {
    // 如果用户未登录，返回 false
    if (loginUserAccess === ACCESS_ENUM.NOT_LOGIN) {
      return false
    }
  }

  // 检查用户权限数组中是否包含任何一个需要的权限
  if (!arrayNeedAccess.some(needAccessItem => arrayAccess.includes(needAccessItem))) {
    return false
  }

  return true
}

export default checkAccess
